import service from '../utils/request'

// ==================== 用户相关 API ====================

/**
 * 获取用户个人信息
 */
export function getUserProfile() {
  return service.get('/api/user/profile')
}

/**
 * 更新用户个人信息
 * @param {Object} data 用户信息
 * @param {string} data.nickname - 昵称
 * @param {string} data.email - 邮箱
 * @param {string} data.bio - 个人简介
 * @param {string} data.avatar - 头像URL
 */
export function updateUserProfile(data) {
  return service.put('/api/user/profile', data)
}

/**
 * 上传头像
 * @param {FormData} formData 包含头像文件的表单数据
 */
export function uploadAvatar(formData) {
  return service.post('/api/user/upload-avatar', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 获取用户学习统计
 */
export function getLearningStats() {
  return service.get('/api/user/learning-stats')
}

/**
 * 获取用户学习记录日期
 * @param {Object} params 查询参数
 * @param {number} params.year - 年份
 * @param {number} params.month - 月份
 */
export function getLearningRecordDates(params) {
  return service.get('/api/user/learning-records/dates', { params })
}

/**
 * 获取用户提交历史
 * @param {Object} params 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.size - 每页数量
 * @param {string} params.status - 状态筛选
 */
export function getUserSubmissions(params) {
  return service.get('/api/user/submissions', { params })
}

/**
 * 获取用户收藏的题目
 * @param {Object} params 查询参数
 */
export function getUserFavorites(params) {
  return service.get('/api/user/favorites', { params })
}

/**
 * 获取用户学习计划
 */
export function getUserLearningPlan() {
  return service.get('/api/user/learning-plan')
}

/**
 * 更新用户学习计划
 * @param {Object} data 学习计划数据
 * @param {number} data.dailyGoal - 每日目标（分钟）
 * @param {Array} data.weeklySchedule - 周计划
 * @param {Array} data.focusTopics - 重点主题
 */
export function updateLearningPlan(data) {
  return service.put('/api/user/learning-plan', data)
}

/**
 * 获取用户成就列表
 */
export function getUserAchievements() {
  return service.get('/api/user/achievements')
}

/**
 * 获取用户学习报告
 * @param {Object} params 查询参数
 * @param {string} params.period - 时间周期：week/month/year
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 */
export function getLearningReport(params) {
  return service.get('/api/user/learning-report', { params })
}

/**
 * 获取用户登录日志
 * @param {Object} params 查询参数
 */
export function getUserLoginLogs(params) {
  return service.get('/api/user/login-logs', { params })
}

/**
 * 获取用户通知列表
 * @param {Object} params 查询参数
 */
export function getUserNotifications(params) {
  return service.get('/api/user/notifications', { params })
}

/**
 * 标记通知为已读
 * @param {number} notificationId 通知ID
 */
export function markNotificationRead(notificationId) {
  return service.put(`/api/user/notifications/${notificationId}/read`)
}

/**
 * 批量标记通知为已读
 * @param {Array} notificationIds 通知ID数组
 */
export function batchMarkNotificationsRead(notificationIds) {
  return service.put('/api/user/notifications/batch-read', { notificationIds })
}

/**
 * 获取用户消息列表
 * @param {Object} params 查询参数
 */
export function getUserMessages(params) {
  return service.get('/api/user/messages', { params })
}

/**
 * 发送私信
 * @param {Object} data 消息数据
 * @param {number} data.receiverId - 接收者ID
 * @param {string} data.content - 消息内容
 */
export function sendMessage(data) {
  return service.post('/api/user/messages', data)
}

/**
 * 获取用户关注列表
 * @param {Object} params 查询参数
 */
export function getUserFollowing(params) {
  return service.get('/api/user/following', { params })
}

/**
 * 获取用户粉丝列表
 * @param {Object} params 查询参数
 */
export function getUserFollowers(params) {
  return service.get('/api/user/followers', { params })
}

/**
 * 关注/取消关注用户
 * @param {number} userId 用户ID
 */
export function toggleFollow(userId) {
  return service.post(`/api/user/${userId}/follow`)
}

/**
 * 获取用户设置
 */
export function getUserSettings() {
  return service.get('/api/user/settings')
}

/**
 * 更新用户设置
 * @param {Object} data 设置数据
 */
export function updateUserSettings(data) {
  return service.put('/api/user/settings', data)
}

/**
 * 获取我的学习情况
 * @param {Object} params 查询参数
 */
export function getMyLearning(params) {
  return service.get('/api/user/my-learning', { params })
}

/**
 * 获取我的帖子
 * @param {Object} params 查询参数
 */
export function getMyPosts(params) {
  return service.get('/api/user/my-posts', { params })
}

/**
 * 获取帖子统计
 */
export function getPostsStats() {
  return service.get('/api/user/posts-stats')
}

/**
 * 删除讨论（我的帖子）
 * @param {number} discussionId 讨论ID
 */
export function deleteDiscussion(discussionId) {
  return service.delete(`/api/user/discussions/${discussionId}`)
}

/**
 * 获取用户统计信息
 * @param {number} userId 用户ID（可选，不传则获取当前用户）
 */
export function getUserStats(userId) {
  const url = userId ? `/api/user/${userId}/stats` : '/api/user/stats'
  return service.get(url)
}

/**
 * 关注/取消关注用户（别名函数）
 * @param {number} userId 用户ID
 */
export function followUser(userId) {
  return service.post(`/api/user/${userId}/follow`)
}

/**
 * 上传图片（通用）
 * @param {FormData} formData 包含图片文件的表单数据
 * @param {Function} onProgress 上传进度回调
 */
export function uploadImage(formData, onProgress) {
  return service.post('/api/user/upload-image', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    onUploadProgress: onProgress
  })
}

/**
 * 获取用户详细信息（查看他人资料）
 * @param {number} userId 用户ID
 */
export function getUserDetail(userId) {
  return service.get(`/api/users/${userId}`)
}

/**
 * 搜索用户
 * @param {Object} params 查询参数
 * @param {string} params.keyword - 关键字
 * @param {number} params.page - 页码
 * @param {number} params.size - 每页数量
 */
export function searchUsers(params) {
  return service.get('/api/users/search', { params })
}

/**
 * 获取用户活动动态
 * @param {number} userId 用户ID
 * @param {Object} params 查询参数
 */
export function getUserActivities(userId, params) {
  return service.get(`/api/users/${userId}/activities`, { params })
}

/**
 * 获取推荐用户
 */
export function getRecommendedUsers() {
  return service.get('/api/users/recommended')
}
